package com.qf.juc;

import java.util.Random;
import java.util.concurrent.Semaphore;

/**
 *
 *
 * 案例：6辆车抢占3个车位
 *     资源紧缺问题
 *
 *     1、6辆车 是 6个线程
 *     2、3个车位 是资源
 *
 *
 *
 *
 * @author lixu
 */
public class SemaphoreDemo {


    public static void main(String[] args) {
        //资源 3个车位
        Semaphore semaphore = new Semaphore(3);//3个车位
        for (int i = 1; i <= 6; i++) {
            new Thread(() -> {
                //开始抢车位
                try {
                    semaphore.acquire(); //开始抢车位   //不见不散的锁   抢不到就阻塞在这里
                    System.out.println(Thread.currentThread().getName() + "：抢到了车位！");
                    Thread.sleep(new Random().nextInt(300));//停车的时长
                    System.out.println(Thread.currentThread().getName() + "：离开了车位！");
                    semaphore.release();//解放了车位
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            },String.valueOf(i)).start();
        }

    }





}
